import Vue from 'vue'
import Vuex from 'vuex'
//引入左侧菜单的子树
import app from './modules/app';
import user from './modules/user';

import lang from './modules/lang';
//引入 getters
import getters from './getters.js';

//引入持久化插件
import createPersistedState from 'vuex-persistedstate';
Vue.use(Vuex)

export default new Vuex.Store({
  plugins:[createPersistedState()],
  getters,
  modules: { //在modudles里面添加子树
    app,
    user,
    lang
  }
})

/*
vuex:用于做复杂项目中的状态的统一管理
功能：购物车、商品对比、左侧菜单状态、登录状态、权限管理
vuex5大属性: 
state状态、
getters 派生状态 对 页面中多个页面的同样属性进行封装处理
mutations 修改状态值、
action 动作 提交给 mutations 一般可以做异步处理和大数据量处理
modules 模块 添加子树
vuex4大辅助函数：mapState mapGetters mapMutations mapActions
vuex流程:
vuex和缓存的区别：vuex 响应式的，但是刷新后会重置；缓存非响应式的，但是刷新后数据会保留
vuex 持久化处理
*/